众所周知,英伟达(Nvidia)最强大的还不是硬件,CUDA(Compute Unified Device Architecture)开发与生态系统才是其牢不可破的护城河。
CUDA是英伟达于2006年推出的一套封闭软件平台,基于C语言的编程框架,可以让开发者在GPU上编写和运行通用的程序,专门用于加速GPU计算。英伟达的GPU特别擅长进行高度并行化的计算任务,而能实现这种并行计算,主要依赖于CUDA技术以及基于CUDA构建的广泛应用和开发者社区。
其他GPU厂商和平台经常通过模拟转译的方式兼容CUDA,但这招以后可能行不通了。

英伟达警告升级
近日,一则有关英伟达试图在其CUDA软件中封杀第三方GPU公司的消息,正引起国内外人工智能及芯片行业的关注。
一直以来,对于如何将CUDA应用迁移到第三方硬件平台,是英伟达对手们的一个难点。其实自从2021年开始,英伟达就禁止其他硬件平台使用转换层(Translation Layers)运行CUDA软件,但只是在在线EULA(最终用户许可协议)中提出警告,并未包含在安装过程中放置在主机系统上的文档。
例如此前的CUDA 11.4 和 11.5 版本,安装的 EULA 文档中没有该条款。如今,CUDA 11.6版本开始,安装的时候就会在EULA中看到相关警告条款。
其中一条写道:“你不能逆向工程、反编译或反汇编使用此SKD生成的任何结果,并在非英伟达平台上进行转译。” (You may not reverse engineer, decompile or disassemble any portion of the output generated using SDK elements for the purpose of translating such output artifacts to target a non-NVIDIA platform)
天下苦CUDA久矣,却都希望站在巨人肩膀上
作为行业领导者,英伟达这样做有好的一面,也有坏的一面。一方面,整个生态都依赖CUDA;另一方面,大家都想站在巨人的肩膀上。后者显然是如今 CUDA 所面临的情况,由于 CUDA 和英伟达硬件的组合已被证明非常高效,因此大量程序都依赖它。
随着更多有竞争力的硬件进入市场,更多的用户倾向于在竞争平台上运行他们的 CUDA 程序。有两种方法可以做到这一点:重新编译代码(可供各个程序的开发人员使用)或使用转换层。
一位国内AI芯片企业中层曾表示,用户一旦习惯了CUDA,便很难有动力再迁移出去。因为迁移几乎意味着代码完全重写,工作繁重耗时且不产生经济效益。
于是,使用ZLUDA 这样的转换层是在非英伟达硬件上运行 CUDA 程序,成为了最简单方法。所要做的只是获取已编译的二进制文件并使用 ZLUDA 或其他转换层运行它们。
虽然ZLUDA 现在似乎陷入困境,AMD 和英特尔都放弃了进一步开发它的机会,但这并不意味着翻译不可行。
有业内人士就解读英伟达此举为:“该限制似乎旨在阻止英特尔和 AMD 最近参与的ZLUDA等计划(ZLUDA诞生于2020年,它设计的初衷是让英伟达的CUDA技术在非英伟达的图形处理器上运行),更为重要的是为了防止一些中国GPU厂商借助转换层利用 CUDA 代码。”
显然,使用转换层威胁到了英伟达在加速计算领域的霸权,特别是在人工智能应用方面。这可能是英伟达决定禁止使用翻译层在其他硬件平台上运行 CUDA 应用程序的主要原因。
随着生成式 AI 和大模型的发展对算力提出更高要求,通用型 GPU(GPGPU) 和基于 DSA 架构的AI 芯片需要在处理性能和能效方面不断提升才能满足这一市场需求。CUDA是否是一道绕不开的“护城河”?3月29日,在IIC Shanghai同期举办的GPU/AI芯片与高性能计算应用论坛上,将邀请代表性的国产 GPGPU 和 AI 芯片厂商与大家探讨这个问题,欢迎点击报名参会。
芯片大神评价CUDA:不是护城河,是沼泽
曾从事 x86、Arm、MISC 和 RISC-V 处理器研究的传奇处理器架构师Jim Keller本周末批评了英伟达的 CUDA架构和软件堆栈,并将其比作 x86,他称之为沼泽。他指出,就连英伟达本身也有多个专用软件包,出于性能原因,这些软件包依赖于开源框架。
“CUDA 是沼泽,而不是护城河,”Keller在 X 帖子中写道。“x86 也是一片沼泽。[…] CUDA 并不漂亮。它是通过一次堆积一件东西来构建的。”
就像x86一样,CUDA在保持软件和硬件向后兼容性的同时逐渐增加了功能。这使得英伟达的平台完整且向后兼容,但它影响了性能并使程序开发变得更加困难。同时,很多开源软件开发框架可以比CUDA更高效地使用。
“基本上没有人编写 CUDA,” Keller在后续帖子中写道。“如果你确实编写 CUDA,它可能不会很快。[...] Triton、Tensor RT、Neon 和 Mojo 的存在是有充分理由的。”
甚至 英伟达本身也有不完全依赖 CUDA 的工具。例如,Triton Inference Server 是英伟达的一款开源工具,可简化 AI 模型的大规模部署,支持 TensorFlow、PyTorch 和 ONNX 等框架。Triton 还提供模型版本控制、多模型服务和并发模型执行等功能,以优化 GPU 和 CPU 资源的利用率。
英伟达的TensorRT是一种高性能深度学习推理优化器和运行时库,可加速英伟达 GPU上的深度学习推理。TensorRT 从各种框架(例如 TensorFlow 和 PyTorch)中获取经过训练的模型,并对其进行优化以进行部署,从而减少延迟并提高图像分类、对象检测和自然语言处理等实时应用程序的吞吐量。
目前重新编译现有的 CUDA 程序仍然完全合法。为了简化这一点,AMD 和 英特尔都有工具分别将 CUDA 程序移植到他们的 ROCm和 OpenAPI平台。
随着 AMD、英特尔、Tenstorrent 和其他公司开发出更好的硬件,更多的软件开发人员将倾向于为这些平台进行设计,而英伟达的 CUDA 主导地位可能会随着时间的推移而减弱。
此外,专门为特定处理器开发和编译的程序将不可避免地比通过翻译层运行的软件运行得更好,这意味着 AMD、英特尔、Tenstorrent 和其他公司能够在与 英伟达的竞争中获得更好的竞争地位——如果他们能够吸引软件开发人员加入的话。
对中国GPU厂商的影响?
目前,英伟达尚未明确指向谁,而且只是在协议中警告,并未采取实际行动,但不排除未来采取进一步措施。
3月5日晚,中国GPU设计厂商之一摩尔线程发布声明称:摩尔线程MUSA/MUSIFY不涉及英伟达EULA相关条款,开发者可放心使用。摩尔线程进一步强调称,MUSA是摩尔线程自主研发、拥有全部知识产权、软硬一体的全功能GPU先进计算统一系统架构,与CUDA无任何依赖关系。
MUSIFY是摩尔线程面向广大MUSA开发者提供的开发工具,方便用户在MUSA计算平台上进行应用移植与开发,可以让开发者将自己的C++源代码,转换成MUSA C++源代码,再通过MUSA编译器MCC编译生成基于MUSA指令集的二进制代码,最终运行在摩尔线程全功能GPU上。
近年来,国产GPU 持续发力,对标行业龙头缩小差距。GPU 有两条主要的发展路线:分别为传统的 2D/3D 图形渲染 GPU 和专注高性能计算的 GP GPU。国产GPU 厂商在两个 领域上均推出了较为成熟的产品,在性能上不断追赶行业主流产品,在特定领域达到业界一流水平。
不过在生态方面,国产厂商大多兼容(依赖)英伟达 CUDA,只为融入大生态进而实现客户端导入。从这次英伟达的举动来看,GPGPU仍然是一个重要且竞争激烈的竞技场,我们将密切关注未来事态的进展,并在3月29日举行的“GPU/AI芯片与高性能计算应用论坛”上,与参会的行业高层探讨这一问题。
- 英伟达没强迫需要 AI 的人一定要用英伟达产品
- 科学无国界,哈哈哈
- 鉴于CUDA的事实行业标准的地位,如果CUDA不开放是否触及反垄断法?
